/**
 * 整个平面按照砌砖式分成若干长方形区域。
 * 给定起点和终点，问需要穿过的最少边界。
 * 分成四个方向分别讨论。
 * 每穿过一个横线，同时可以穿过一条竖线，所以可以先移动y方向
 * 然后再看要不要移动x方向
 */
#include <bits/stdc++.h>
using namespace std;

using llt = long long;
using pii = pair<int, int>;
using vpii = vector<pii>;
using vi = vector<int>;
using vll = vector<llt>;

llt const INF = 0x1F2F3F4F5F6F7F8F;
llt const NINF = -INF;

template<typename T>
istream & operator >> (istream & is, vector<T>&v){
    for(auto & i : v) is >> i;
    return is;
}

template<typename T>
void input(vector<T>&v, int n){
    v.assign(n, {});
    for(int i=1;i<=n;++i)cin>>v[i];
    return;
}

llt Sx, Sy, Tx, Ty;

llt procTR(){
    if((Sx + Sy) % 2 == 0) Sx += 1;
    if((Tx + Ty) % 2 == 0) Tx += 1;

    auto cha = Ty - Sy;
    assert(cha >= 0);

    auto xmost = Sx + cha;
    if(Tx <= xmost) return cha;

    auto tmp = Tx - xmost;
    assert(tmp % 2 == 0);
    tmp /= 2;
    return cha + tmp;
}

llt procBR(){
    if((Sx + Sy) % 2 == 0) Sx += 1;
    if((Tx + Ty) % 2 == 0) Tx += 1;

    auto cha = Sy - Ty;
    auto xmost = Sx + cha;
    if(Tx <= xmost) return cha;

    auto tmp = Tx - xmost;
    assert(tmp % 2 == 0);
    tmp /= 2;
    return cha + tmp;   
}

llt procTL(){
    if((Sx + Sy) % 2) Sx -= 1;
    if((Tx + Ty) % 2) Tx -= 1;

    auto cha = Ty - Sy;
    assert(cha >= 0);

    auto xmost = Sx - cha;
    if(Tx >= xmost) return cha;

    auto tmp = xmost - Tx;
    assert(tmp % 2 == 0);
    tmp /= 2;
    return cha + tmp;    
}

llt procBL(){
    if((Sx + Sy) % 2) Sx -= 1;
    if((Tx + Ty) % 2) Tx -= 1;

    auto cha = Sy - Ty;
    assert(cha >= 0);

    auto xmost = Sx - cha;
    if(Tx >= xmost) return cha;

    auto tmp = xmost - Tx;
    assert(tmp % 2 == 0);
    tmp /= 2;
    return cha + tmp;        
}

void work(){
    cin >> Sx >> Sy >> Tx >> Ty;
    llt ans = -1;
    if(Tx >= Sx){
        if(Ty >= Sy) ans = procTR();
        else ans = procBR();
    }else{
        if(Ty >= Sy) ans = procTL();
        else ans = procBL();
    }
    if(ans==-1)while(1);
    cout << ans << endl;
    return;
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    int nofkase = 1;
    // cin >> nofkase; 
    while(nofkase--) work();
    return 0;
}
